home *** CD-ROM | disk | FTP | other *** search
- #ifndef IFF_H
- #define IFF_H
- /*----------------------------------------------------------------------*/
- /* IFF.H defs for IFF-85 Interchange Format Files. 1/22/86 */
- /* */
- /* By Jerry Morrison and Steve Shaw, Electronic Arts. */
- /* This software is in the public domain. */
- /*----------------------------------------------------------------------*/
-
- /* mods by Karl Lehenbauer, 1987, 1988 */
-
- #ifndef LIBRARIES_DOS_H
- #include "libraries/dos.h"
- #endif
-
- typedef LONG ID;
-
- /* Four-character IDentifier builder.*/
- #define MakeID(a,b,c,d) ( (LONG)(a)<<24L | (LONG)(b)<<16L | (c)<<8 | (d) )
-
- /* Standard group IDs. A chunk with one of these IDs contains a
- SubTypeID followed by zero or more chunks.*/
- #define ID_FORM MakeID('F','O','R','M')
- #define ID_PROP MakeID('P','R','O','P')
- #define ID_LIST MakeID('L','I','S','T')
- #define ID_CAT MakeID('C','A','T',' ')
- #define ID_FILLER MakeID(' ',' ',' ',' ')
- #define ID_FNAM MakeID('F','N','A','M')
- #define ID_MISC MakeID('M','I','S','C')
-
- /* The IDs "FOR1".."FOR9", "LIS1".."LIS9", & "CAT1".."CAT9" are reserved
- * for future standardization.*/
-
- /* ---------- Chunk ----------------------------------------------------*/
-
- /* All chunks start with a type ID and a count of the data bytes that
- follow--the chunk's "logicl size" or "data size". If that number is odd,
- a 0 pad byte is written, too. */
-
- typedef struct {
- ID ckID;
- LONG ckSize;
- } ChunkHeader;
-
- typedef struct {
- ID ckID;
- LONG ckSize;
- UBYTE ckData[ 1 /*REALLY: ckSize*/ ];
- } Chunk;
-
- /* define the maximum reasonable chunk size - the real max is around 2^32,
- * but we need some reasonability limit to check for */
- #define MAXCHUNKSIZE 900000
-
- /* The Grouping chunks (LIST, FORM, PROP, & CAT) contain concatenations of
- * chunks after a subtype ID that identifies the content chunks.
- * "FORM type XXXX", "LIST of FORM type XXXX", "PROPerties associated
- * with FORM type XXXX", or "conCATenation of XXXX".*/
- typedef struct {
- ID ckID;
- LONG ckSize; /* this ckSize includes "grpSubID".*/
- ID grpSubID;
- } GroupHeader;
-
- typedef struct {
- ID ckID;
- LONG ckSize;
- ID grpSubID;
- UBYTE grpData[ 1 /*REALLY: ckSize-sizeof(grpSubID)*/ ];
- } GroupChunk;
-
-
- #endif IFF_H
-
-